import request from '@/utils/request'

/**
 * 获取 Cloudflare 配置列表或单个配置
 * @param {Number} id - 配置ID(可选)
 * @param {String} args - 查询参数(可选)
 */
export function Get(id, args) {
  return request({
    url: `/static_web/api/cloudflare/cfg/${id || ''}${args && ('?' + args) || ''}`,
    method: 'get'
  })
}

/**
 * 创建 Cloudflare 配置
 * @param {Object} data - 配置数据
 */
export function Post(data) {
  return request({
    url: '/static_web/api/cloudflare/cfg/',
    headers: { 'content-type': 'application/json' },
    method: 'post',
    data: data
  })
}

/**
 * 更新 Cloudflare 配置
 * @param {Number} id - 配置ID
 * @param {Object} data - 更新的数据
 */
export function Put(id, data) {
  return request({
    url: `/static_web/api/cloudflare/cfg/${id}/`,
    headers: { 'content-type': 'application/json' },
    method: 'put',
    data: data
  })
}

/**
 * 删除 Cloudflare 配置
 * @param {Number} id - 配置ID
 */
export function Delete(id) {
  return request({
    url: `/static_web/api/cloudflare/cfg/${id}/`,
    method: 'delete'
  })
}

/**
 * 部署网站到 Cloudflare Pages
 * @param {Number} websiteId - 网站ID
 * @param {Number} configId - Cloudflare配置ID
 */
export function DeployToCloudflare(websiteId, configId) {
  return request({
    url: `/static_web/api/cloudflare/deploy/${websiteId}/`,
    headers: { 'content-type': 'application/json' },
    method: 'post',
    data: { config_id: configId },
    timeout: 300000 // 5分钟超时
  })
}

/**
 * 获取部署历史
 * @param {Number} websiteId - 网站ID
 */
export function GetDeploymentHistory(websiteId) {
  return request({
    url: `/static_web/api/cloudflare/history/${websiteId}/`,
    method: 'get'
  })
}

/**
 * 获取 Cloudflare Pages 项目列表
 * @param {String} accountId - Account ID（使用API Token时）
 * @param {String} apiToken - API Token 或 Global API Key
 * @param {String} email - 邮箱地址（使用Global API Key时）
 */
export function ListProjects(accountId, apiToken, email) {
  return request({
    url: '/static_web/api/cloudflare/projects/list/',
    headers: { 'content-type': 'application/json' },
    method: 'post',
    data: {
      account_id: accountId || '',
      api_token: apiToken,
      email: email || ''
    }
  })
}

/**
 * 创建 Cloudflare Pages 项目
 * @param {String} accountId - Account ID（使用API Token时）
 * @param {String} apiToken - API Token 或 Global API Key
 * @param {String} projectName - 项目名称
 * @param {String} productionBranch - 生产分支
 * @param {String} email - 邮箱地址（使用Global API Key时）
 */
export function CreateProject(accountId, apiToken, projectName, productionBranch = 'main', email) {
  return request({
    url: '/static_web/api/cloudflare/projects/create/',
    headers: { 'content-type': 'application/json' },
    method: 'post',
    data: {
      account_id: accountId || '',
      api_token: apiToken,
      email: email || '',
      project_name: projectName,
      production_branch: productionBranch
    }
  })
}
